package com.fujifilm.project.plan.entity;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.LocalDateTime;

import com.mybatisflex.annotation.Column;
import com.mybatisflex.annotation.Id;
import com.mybatisflex.annotation.KeyType;
import com.mybatisflex.annotation.Table;

import jakarta.annotation.Nullable;
import lombok.Data;

/**
 * 项目组成员关联实体类
 * 
 * @date 2025年6月13日
 * @time 15:35:00
 * @description 项目组成员关联管理实体
 * 
 */
@Data
@Table("project_group_member") // 数据库表名
public class ProjectGroupMember implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 
     * <pre>
     * 关联ID
     * </pre>
     */
    @Id(keyType = KeyType.Auto)
    @Column("id")
    private Long id;

    /**
     * 
     * <pre>
     * 项目组ID
     * </pre>
     */
    @Column("group_id")
    private Long groupId;

    /**
     * 
     * <pre>
     * 用户ID
     * </pre>
     */
    @Column("user_id")
    private Long userId;

    /**
     * 
     * <pre>
     * 角色(LEADER - 组长, MEMBER - 成员, OBSERVER - 观察者)
     * </pre>
     */
    @Column(value = "role")
    private String role;

    /**
     * 
     * <pre>
     * 加入日期
     * </pre>
     */
    @Column(value = "join_date")
    @Nullable
    private LocalDate joinDate;

    /**
     * 
     * <pre>
     * 离开日期
     * </pre>
     */
    @Column(value = "leave_date")
    @Nullable
    private LocalDate leaveDate;

    /**
     * 
     * <pre>
     * 是否活跃(0-非活跃 1-活跃)
     * </pre>
     */
    @Column(value = "is_active")
    private Integer isActive;

    /**
     * 
     * <pre>
     * 创建时间
     * </pre>
     */
    @Column(value = "create_time")
    @Nullable
    private LocalDateTime createTime;

    /**
     * 
     * <pre>
     * 更新时间
     * </pre>
     */
    @Column(value = "update_time")
    @Nullable
    private LocalDateTime updateTime;
}